package server

import (
  "github.com/siddontang/go-log/log"
)

const (
  accessTimeFormat = "2006/01/02 15:04:05"
)

type accessLog struct {
  l *log.Logger
}

func newAcessLog(baseName string) (*accessLog, error) {
  l := new(accessLog)

  h, err := log.NewTimeRotatingFileHandler(baseName, log.WhenDay, 1)
  if err != nil {
    return nil, err
  }

  l.l = log.New(h, log.Ltime)

  return l, nil
}

func (l *accessLog) Close() {
  l.l.Close()
}

func (l *accessLog) Log(remoteAddr string, usedTime int64, request []byte, err error) {

  format := `%s %q %d [%s]`

  if err == nil {
    l.l.Info(format, remoteAddr, request, usedTime, "OK")
  } else {
    l.l.Info(format, remoteAddr, request, usedTime, err.Error())
  }
}
